package com.jufa_3.controller;

import com.jufa_3.common.PDFTool;
import com.jufa_3.dto.SelectInfo;
import com.jufa_3.entity.PayOrder;
import com.jufa_3.service.ComboOrderService;
import com.jufa_3.service.PayOrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletResponse;

@Slf4j
@CrossOrigin
@Controller
@RequestMapping("/getPDF")
public class FileController {

    @Autowired
    private ComboOrderService comboOrderService;

    @Autowired
    private PDFTool pdfTool;

    @Autowired
    private PayOrderService payOrderService;

    /**
     * 获取PDF报告
     *
     * @param sif
     * @param response
     */
    @GetMapping
    public void getPdf(SelectInfo sif, HttpServletResponse response) {
        sif.setSourceType("RECORD_PDF");
        // 返回PDF
        if ("企业信息PDF".equals(sif.getCostName())) {
            sif.setKeyWord("QYXX&" + sif.getComType() + "&" + sif.getComValue());
            pdfTool.getComPDF(sif, response);
        } else if ("司法信息PDF".equals(sif.getCostName())) {
//            sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum() + "&" + sif.getMobile());
            sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum());
            pdfTool.getSiFaPDF(sif, response);
        } else if ("任职信息PDF".equals(sif.getCostName())) {
            sif.setKeyWord("QYRZ&" + sif.getName() + "&" + sif.getCardNum());
            pdfTool.getTakeOfficePDF(sif, response);
        } else if ("司法信息(高阶版)PDF".equals(sif.getCostName())) {
            sif.setKeyWord( "GRSSJL&" + sif.getName() + "&" + sif.getCardNum());
            pdfTool.getGrajPDF(sif, response);
        }
    }

    /**
     * 套餐扣费获取PDF报告
     *
     * @param sif
     * @param response
     */
    @GetMapping("/byCombo")
    public void getPdfByCombo(SelectInfo sif, HttpServletResponse response) {
        sif.setSourceType("COMBO_PDF");
        if ("企业信息PDF".equals(sif.getCostName())) {
            sif.setKeyWord("QYXX&" + sif.getComType() + "&" + sif.getComValue());
            sif.setId(comboOrderService.debit(sif).toString());
            pdfTool.getComPDF(sif, response);
        } else if ("司法信息PDF".equals(sif.getCostName())) {
//            sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum() + "&" + sif.getMobile());
            sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum());
            sif.setId(comboOrderService.debit(sif).toString());
            pdfTool.getSiFaPDF(sif, response);
        } else if ("任职信息PDF".equals(sif.getCostName())) {
            sif.setKeyWord("QYRZ&" + sif.getName() + "&" + sif.getCardNum());
            sif.setId(comboOrderService.debit(sif).toString());
            pdfTool.getTakeOfficePDF(sif, response);
        } else if ("司法信息(高阶版)PDF".equals(sif.getCostName())) {
            sif.setKeyWord( "GRSSJL&" + sif.getName() + "&" + sif.getCardNum());
            sif.setId(comboOrderService.debit(sif).toString());
            pdfTool.getGrajPDF(sif, response);
        }
    }

    /**
     * 微信付款获取PDF报告
     *
     * @param sif
     * @param response
     */
    @GetMapping("/byPay")
    public void getPdfByPay(SelectInfo sif, HttpServletResponse response) {
        // 返回PDF
        PayOrder one = payOrderService.lambdaQuery()
                .eq(PayOrder::getBuyerId, sif.getOpenId())
                .eq(PayOrder::getOutTradeNo, sif.getOutTradeNo())
                .eq(PayOrder::getTradeState, "SUCCESS").one();
        if (one != null) {   // 支付成功添加收费记录
            // 返回PDF
            sif.setId(one.getOutTradeNo());
            sif.setSourceType("PAY_PDF");
            if ("企业信息PDF".equals(sif.getCostName())) {
                sif.setKeyWord("QYXX&" + sif.getComType() + "&" + sif.getComValue());
                pdfTool.getComPDF(sif, response);
            } else if ("司法信息PDF".equals(sif.getCostName())) {
//                sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum() + "&" + sif.getMobile());
                sif.setKeyWord("FYXX&" + sif.getName() + "&" + sif.getCardNum());
                pdfTool.getSiFaPDF(sif, response);
            } else if ("任职信息PDF".equals(sif.getCostName())) {
                sif.setKeyWord("QYRZ&" + sif.getName() + "&" + sif.getCardNum());
                pdfTool.getTakeOfficePDF(sif, response);
            } else if ("司法信息(高阶版)PDF".equals(sif.getCostName())) {
                sif.setKeyWord( "GRSSJL&" + sif.getName() + "&" + sif.getCardNum());
                pdfTool.getGrajPDF(sif, response);
            }
        } else {  // 未支付成功
            response.setStatus(500);
        }
    }

}
